(symb_lib/bsp_sym.c:364)
Prototype:
CagdCrvStruct *BspCrvDeriveRational(CagdCrvStruct *Crv)
Description:
Given a rational Bspline curve - computes its derivative curve (Hodograph)
using the quotient rule for differentiation.
Parameters:
Crv: | Bspline curve to differentiate.
|
---|
Returned Value:
CagdCrvStruct *: Differentiated rational Bspline curve.
|
---|
See Also:
BzrCrvDerive
BspCrvDerive
BzrCrvDeriveRational
CagdCrvDerive
Keywords:
derivatives
(symb_lib/bsp_sym.c:58)
Prototype:
CagdCrvStruct *BspCrvMult(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two Bspline curves - multiply them coordinatewise.
The two curves are promoted to same point type before the multiplication
can take place.
See also BspMultInterpFlag.
Parameters:
Crv1, Crv2: | The two curves to multiply.
|
---|
Returned Value:
CagdCrvStruct *: The product Crv1 * Crv2 coordinatewise.
|
---|
Keywords:
product
(symb_lib/bsp_sym.c:34)
Prototype:
int BspMultInterpFlag(int BspMultUsingInter)
Description:
Sets method of Bspline product computation.
Parameters:
BspMultUsingInter: | If TRUE, Bspline product iscomputed by setting an
interpolation problem. Otherwise, by decomposing the
Bspline geometry to Bezier geometry.
|
---|
Returned Value:
Keywords:
product
(symb_lib/bsp_sym.c:461)
Prototype:
CagdSrfStruct *BspSrfDeriveRational(CagdSrfStruct *Srf, CagdSrfDirType Dir)
Description:
Given a rational Bspline surface - computes its derivative surface in
direction Dir, using the quotient rule for differentiation.
Parameters:
Srf: | Bspline surface to differentiate.
|
---|
Dir: | Direction of Differentiation. Either U or V.
|
---|
Returned Value:
CagdSrfStruct *: Differentiated rational Bspline surface.
|
---|
See Also:
CagdSrfDerive
BzrSrfDerive
BspSrfDerive
BzrSrfDeriveRational
Keywords:
derivatives
(symb_lib/bsp_sym.c:223)
Prototype:
CagdSrfStruct *BspSrfMult(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two Bspline surfaces - multiply them coordinatewise.
The two surfaces are promoted to same point type before multiplication
can take place.
See also BspMultInterpFlag.
Parameters:
Srf1, Srf2: | The two surfaces to multiply.
|
---|
Returned Value:
CagdSrfStruct *: The product Srf1 * Srf2 coordinatewise.
|
---|
Keywords:
product
(symb_lib/bzr_sym.c:490)
Prototype:
CagdCrvStruct *BzrApproxBzrCrvAsCubicPoly(CagdCrvStruct *Crv, CagdRType Tol2)
Description:
Given a Bezier curve with order larger than cubic, approximate it using
piecewise cubic curves.
A C^1 continuous approximation is computed so that the approximation is
at most sqrt(Tol2) away from the given curve.
Input curve can be rational, although output is always polynomial.
Parameters:
Crv: | To approximate using cubic Bezier curves.
|
---|
Tol2: | Accuracy control.
|
---|
Returned Value:
CagdCrvStruct *: List of cubic Bezier curves approximating Crv.
|
---|
Keywords:
approximation
conversion
(symb_lib/bzr_sym.c:415)
Prototype:
CagdCrvStruct *BzrApproxBzrCrvAsCubics(CagdCrvStruct *Crv,
CagdRType Tol,
CagdRType MaxLen,
CagdBType NoRational)
Description:
Given a Bezier curve - convert it to (possibly) piecewise cubic.
If the curve is
1. A cubic - a copy if it is returned.
2. Lower than cubic - a degree raised (to a cubic) curve is returned.
3. Higher than cubic - a C^1 continuous piecewise cubic approximation
is computed for Crv.
In case 3 a list of polynomial cubic curves is returned. Tol is then used
for the distance tolerance error measure for the approximation.
If, however, NoRational is set, rational curves of any order will also
be approximated using cubic polynomials.
Furthermore if the total length of control polygon is more than MaxLen,
the curve is subdivided until this is not the case.
Parameters:
Crv: | To approximate using cubic Bezier polynomials.
|
---|
Tol: | Accuracy control.
|
---|
MaxLen: | Maximum arc length of curve.
|
---|
NoRational: | Do we want to approximate rational curves as well?
|
---|
Returned Value:
CagdCrvStruct *: A list of cubic Bezier polynomials approximating Crv.
|
---|
Keywords:
conversion
approximation
(symb_lib/composit.c:282)
Prototype:
CagdCrvStruct *BzrComposeCrvCrv(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two Bezier curves, Crv1 and Crv2, computes their composition
Crv1(Crv2(t)).
Crv2 must be a scalar curve completely contained in Crv1's parametric
domain.
See: "Freeform surfcae analysis using a hybrid of symbolic and numeric
computation" by Gershon Elber, PhD thesis, University of Utah, 1992.
Parameters:
Crv1, Crv2: | The two curve to compose together.
|
---|
Returned Value:
CagdCrvStruct *: The composed curve.
|
---|
Keywords:
composition
(symb_lib/composit.c:478)
Prototype:
CagdCrvStruct *BzrComposeSrfCrv(CagdSrfStruct *Srf, CagdCrvStruct *Crv)
Description:
Given a Bezier curve Crv and a Bezier surface Srf, computes their
coomposition Srf(Crv(t)).
Crv must be a two dimensional curve completely contained in the
parametric domain of Srf.
See: "Freeform surfcae analysis using a hybrid of symbolic and numeric
computation" by Gershon Elber, PhD thesis, University of Utah, 1992.
Parameters:
Srf, Crv: | The curve and surface to compose.
|
---|
Returned Value:
CagdCrvStruct *: The resulting composition.
|
---|
Keywords:
composition
(symb_lib/bzr_sym.c:214)
Prototype:
CagdCrvStruct *BzrCrvDeriveRational(CagdCrvStruct *Crv)
Description:
Given a rational Bezier curve - computes its derivative curve (Hodograph)
using the quotient rule for differentiation.
Parameters:
Crv: | Bezier curve to differentiate.
|
---|
Returned Value:
CagdCrvStruct *: Differentiated rational Bezier curve.
|
---|
See Also:
BzrCrvDerive
BspCrvDerive
BspCrvDeriveRational
CagdCrvDerive
Keywords:
derivatives
(symb_lib/bzr_sym.c:26)
Prototype:
CagdCrvStruct *BzrCrvMult(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two Bezier curves - multiply them coordinatewise.
The two curves are promoted to same point type before the multiplication
can take place.
Parameters:
Crv1, Crv2: | The two curves to multiply.
|
---|
Returned Value:
CagdCrvStruct *: The product Crv1 * Crv2 coordinatewise.
|
---|
Keywords:
product
(symb_lib/bzr_sym.c:90)
Prototype:
CagdCrvStruct *BzrCrvMultList(CagdCrvStruct *Crv1Lst, CagdCrvStruct *Crv2Lst)
Description:
Given two Bezier curve lists - multiply them one at a time.
Return a Bezier curve lists representing their products.
Parameters:
Crv1Lst: | First list of Bezier curves to multiply.
|
---|
Crv2Lst: | Second list of Bezier curves to multiply.
|
---|
Returned Value:
CagdCrvStruct *: A list of product curves
|
---|
Keywords:
product
(symb_lib/bzr_sym.c:309)
Prototype:
CagdSrfStruct *BzrSrfDeriveRational(CagdSrfStruct *Srf, CagdSrfDirType Dir)
Description:
Given a rational Bezier surface - computes its derivative surface in
direction Dir, using the quotient rule for differentiation.
Parameters:
Srf: | Bezier surface to differentiate.
|
---|
Dir: | Direction of Differentiation. Either U or V.
|
---|
Returned Value:
CagdSrfStruct *: Differentiated rational Bezier surface.
|
---|
See Also:
CagdSrfDerive
BzrSrfDerive
BspSrfDerive
BspSrfDeriveRational
Keywords:
derivatives
(symb_lib/bzr_sym.c:128)
Prototype:
CagdSrfStruct *BzrSrfMult(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two Bezier surfaces - multiply them coordinatewise.
The two surfaces are promoted to same point type before multiplication
can take place.
Parameters:
Srf1, Srf2: | The two surfaces to multiply.
|
---|
Returned Value:
CagdSrfStruct *: The product Srf1 * Srf2 coordinatewise.
|
---|
Keywords:
product
(symb_lib/adap_iso.c:103)
Prototype:
CagdCrvStruct *SymbAdapIsoExtract(CagdSrfStruct *Srf,
CagdSrfStruct *NSrf,
SymbAdapIsoDistSqrFuncType AdapIsoDistFunc,
CagdSrfDirType Dir,
CagdRType Eps,
CagdBType FullIso,
CagdBType SinglePath)
Description:
Extracts a valid coverage set of isolines from the given surface in the
given direction and epsilon.
If FullIso is TRUE, all extracted isocurves are spanning the entire
parametric domain.
If SinglePath is TRUE, the entire coverage is going to be a single
curve.
If NSrf != NULL, every second curve will be a vector field curve
representing the unnormalized normal for the previous Euclidean curve.
This mode disable the SinglePath mode.
See also function SymbSetAdapIsoExtractMinLevel.
Parameters:
Srf: | To compute adaptive isocurve coverage form
|
---|
NSrf: | Normal vector field defining the normals of Srf.
|
---|
AdapIsoDistFunc: | ptional function to invoke with the two adjacent
isoparametric curves of the coverage to evaluate the
distance between them.
|
---|
Dir: | Direction of adaptive isocurve extraction. Either U or V.
|
---|
Eps: | Tolerance of adaptive isocurve cuverage. For every point P
on Srf there will be a point Q in one of the extracted
isocurves such the |P - Q| < Eps.
|
---|
FullIso: | Do we want all isocurves to span the entire domain?
|
---|
SinglePath: | o we want a single curve through them all?
|
---|
Returned Value:
CagdCrvStruct *: A list of curves representing the computed adaptive
isocurve coverage for surface Srf. If normal field,
NSrf, is prescribed, normal curves are concatenated
alternatingly in this list.
|
---|
Keywords:
adaptive isocurves
(symb_lib/prisa.c:54)
Prototype:
CagdSrfStruct *SymbAllPrisaSrfs(CagdSrfStruct *Srfs,
int SamplesPerCurve,
CagdRType Epsilon,
CagdSrfDirType Dir,
CagdVType Space)
Description:
Computes a piecewise ruled surface approximation to a given set of
surfaces with given Epsilon, and lay them out "nicely" onto the XY plane,
by approximating each ruled surface as a developable surface with
SamplesPerCurve samples.
Dir controls the direction of ruled approximation, SpaceScale and
Offset controls the placement of the different planar pieces.
Prisa is the hebrew word for the process of flattening out a three
dimensional surface. I have still to find an english word for it.
Parameters:
Srfs: | To approximate and faltten out.
|
---|
SamplesPerCurve: | uring the approximation of a ruled surface as a
developable surface.
|
---|
Epsilon: | Accuracy control for the piecewise ruled surface
approximation.
|
---|
Dir: | Direction of ruled/developable surface approximation.
Either U or V.
|
---|
Space: | A vector in the XY plane to denote the amount of
translation from one flattened out surface to the next.
|
---|
Returned Value:
CagdSrfStruct *: A list of planar surfaces denoting the layout (prisa)
of the given Srfs to the accuracy requested.
|
---|
Keywords:
layout
prisa
(symb_lib/composit.c:37)
Prototype:
CagdCrvStruct *SymbComposeCrvCrv(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves, Crv1 and Crv2, computes the composition Crv1(Crv2(t)).
Crv2 must be a scalar curve completely contained in Crv1's parametric
domain.
Parameters:
Crv1, Crv2: | The two curve to compose together.
|
---|
Returned Value:
CagdCrvStruct *: The composed curve.
|
---|
Keywords:
composition
(symb_lib/composit.c:365)
Prototype:
CagdCrvStruct *SymbComposeSrfCrv(CagdSrfStruct *Srf, CagdCrvStruct *Crv)
Description:
Given a curve Crv and surface Srf, computes the composition Srf(Crv(t)).
Crv must be a two dimensional curve completely contained in the
parametric domain of Srf.
Parameters:
Srf, Crv: | The curve and surface to compose.
|
---|
Returned Value:
CagdCrvStruct *: The resulting composition.
|
---|
Keywords:
composition
(symb_lib/curvatur.c:351)
Prototype:
CagdCrvStruct *SymbCrv2DCurvatureSign(CagdCrvStruct *Crv)
Description:
Computes a scalar curve representing the curvature sign of a planar curve.
The given curve is assumed to be planar and only its x and y coordinates
are considered.
Then the curvature sign is equal to
. .. . ..
s = X Y - Y X
Parameters:
Returned Value:
See Also:
SymbCrv2DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DRadiusNormal
SymbCrv3DCurvatureNormal
SymbCrv2DInflectionPts
SymbCrv2DExtremCrvtrPts
Keywords:
curvature
(symb_lib/curvatur.c:41)
Prototype:
CagdCrvStruct *SymbCrv2DCurvatureSqr(CagdCrvStruct *Crv)
Description:
Computes a scalar curve representing the curvature of a planar curve.
The given curve is assumed to be planar and only its x and y coordinates
are considered.
Then the curvature k is equal to
. .. . ..
X Y - Y X
k = -------------
.2 .2 3/2
( X + Y )
Since we cannot represent k because of the square root, we compute and
represent k^2.
Parameters:
Crv: | To compute the square of teh curvature field for.
|
---|
Returned Value:
CagdCrvStruct *: The square of the curvature field of Crv.
|
---|
See Also:
SymbCrv3DCurvatureSqr
SymbCrv3DRadiusNormal
SymbCrv3DCurvatureNormal
SymbCrv2DCurvatureSign
SymbCrv2DInflectionPts
SymbCrv2DExtremCrvtrPts
Keywords:
curvature
(symb_lib/curvatur.c:519)
Prototype:
CagdPtStruct *SymbCrv2DExtremCrvtrPts(CagdCrvStruct *Crv, CagdRType Epsilon)
Description:
Given a planar curve, finds all its extreme curvatrue points by finding
the set of extreme locations on the curvature function of Crv.
Parameters:
Crv: | To find all int extrem curvature locations.
|
---|
Epsilon: | Accuracy control.
|
---|
Returned Value:
CagdPtStruct *: A list of parameter values on Crv that have extrem
curvature values.
|
---|
See Also:
SymbCrv2DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DRadiusNormal
SymbCrv3DCurvatureNormal
SymbCrv2DCurvatureSign
SymbCrv2DInflectionPts
Keywords:
curvature
(symb_lib/curvatur.c:486)
Prototype:
CagdPtStruct *SymbCrv2DInflectionPts(CagdCrvStruct *Crv, CagdRType Epsilon)
Description:
Given a planar curve, finds all its inflection points by finding the zero
set of the sign of the curvature function of the curve.
Parameters:
Crv: | To find all its inflection points.
|
---|
Epsilon: | Accuracy control.
|
---|
Returned Value:
CagdPtStruct *: A list of parameter values on Crv that are inflection
points.
|
---|
See Also:
SymbCrv2DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DRadiusNormal
SymbCrv3DCurvatureNormal
SymbCrv2DCurvatureSign
SymbCrv2DExtremCrvtrPts
Keywords:
curvature
inflection points
(symb_lib/symbpoly.c:208)
Prototype:
CagdPolylineStruct *SymbCrv2Polyline(CagdCrvStruct *Crv,
int SamplesPerCurve,
CagdBType Optimal,
CagdBType OptiLin)
Description:
Routine to approx. a single curve as a polyline with SamplesPerCurve
samples. Polyline is always E3 CagdPolylineStruct type.
NULL is returned in case of an error, otherwise CagdPolylineStruct.
Parameters:
Crv: | To approximate as a polyline.
|
---|
SamplesPerCurve: | Number of samples to approximate with.
|
---|
Optimal: | If TRUE, yse optimal approximation of isocurves.
Otherwise, the curve is sampled using equally spaced
samples in parametric space.
|
---|
OptiLin: | If TRUE, optimize linear curves.
|
---|
Returned Value:
CagdPolylineStruct *: A polyline representing the piecewise linear
approximation from, or NULL in case of an error.
|
---|
See Also:
BspCrv2Polyline
BzrCrv2Polyline
IritCurve2Polylines
Keywords:
piecewise linear approximation
polyline
(symb_lib/curvatur.c:267)
Prototype:
CagdCrvStruct *SymbCrv3DCurvatureNormal(CagdCrvStruct *Crv)
Description:
Computes a vector field curve representing the curvature of a curve, in
the normal direction, that is kN.
. .. . . .. .
C x C C ( C x C ) x C
kN = kB x T = ----- x ----- = --------------
. 3 . . 4
| C | | C | | C |
Parameters:
Crv: | To compute the normal curvature field.
|
---|
Returned Value:
CagdCrvStruct *: Computed normal curvature field.
|
---|
See Also:
SymbCrv2DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DRadiusNormal
SymbCrv2DCurvatureSign
SymbCrv2DInflectionPts
SymbCrv2DExtremCrvtrPts
Keywords:
curvature
(symb_lib/curvatur.c:134)
Prototype:
CagdCrvStruct *SymbCrv3DCurvatureSqr(CagdCrvStruct *Crv)
Description:
Computes a scalar field curve representing the square of the curvature
of a given 3D curve.
Parameters:
Crv: | To compute scalar field of curvatrue square for.
|
---|
Returned Value:
CagdCrvStruct *: Computed scalar field of curvature square of Crv.
|
---|
See Also:
SymbCrv2DCurvatureSqr
SymbCrv3DRadiusNormal
SymbCrv3DCurvatureNormal
SymbCrv2DCurvatureSign
SymbCrv2DInflectionPts
SymbCrv2DExtremCrvtrPts
Keywords:
curvature
(symb_lib/curvatur.c:203)
Prototype:
CagdCrvStruct *SymbCrv3DRadiusNormal(CagdCrvStruct *Crv)
Description:
Computes a vector field curve representing the radius (1/curvature) of a
curve, in the normal direction, that is N / k:
. .. . . 6 . .. . . 2
k N (C x C ) x C | C | ( (C x C ) x C ) | C |
N / k = ----- = ------------ . --------- = -----------------------
2 . 4 . .. 2 . .. 2
k | C | (C x C ) (C x C )
Parameters:
Crv: | To compute the normal field with radius as magnitude.
|
---|
Returned Value:
CagdCrvStruct *: Computed normal field with 1 / k as magnitude.
|
---|
See Also:
SymbCrv2DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DCurvatureSqr
SymbCrv3DCurvatureNormal
SymbCrv2DCurvatureSign
SymbCrv2DInflectionPts
SymbCrv2DExtremCrvtrPts
Keywords:
curvature
(symb_lib/offset.c:461)
Prototype:
CagdCrvStruct *SymbCrvAdapOffset(CagdCrvStruct *OrigCrv,
CagdRType OffsetDist,
CagdRType OffsetError,
SymbOffCrvFuncType OffsetAprxFunc,
CagdBType BezInterp)
Description:
Given a curve and an offset amount OffsetDist, returns an approximation to
the offset curve by offseting the control polygon in the normal direction.
This function computes an approximation to the offset using
OffsetAprxFunc, measure the error and use it to refine and decrease the
error adaptively.
Bezier curves are promoted to Bsplines curves.
See also: Gershon Elber and Elaine Cohen, "Error Bounded Variable
Distance Offset Operator for Free Form Curves and Surfaces". International
Journal of Computational Geometry & Applications, Vol. 1, Num. 1, March
1991, pp 67-78.
Parameters:
OrigCrv: | To approximate its offset curve with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
OffsetError: | Tolerance control.
|
---|
OffsetAprxFunc: | A function that can be used to approximate an offset
of a curve. If NULL SymbCrvOffset function is selected.
|
---|
BezInterp: | If TRUE, control points are interpolated when the curve is
reduced to a Bezier form. Otherwise, control points are
translated OffsetDist amount only, under estimating the
Offset.
|
---|
Returned Value:
CagdCrvStruct *: An approximation to the offset curve, to within
OffsetError.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/offset.c:592)
Prototype:
CagdCrvStruct *SymbCrvAdapOffsetTrim(CagdCrvStruct *OrigCrv,
CagdRType OffsetDist,
CagdRType OffsetError,
SymbOffCrvFuncType OffsetAprxFunc,
CagdBType BezInterp)
Description:
Same function as CagdCrvAdapOffset, but trims the self intersection loops.
See also: Gershon Elber and Elaine Cohen, "Error Bounded Variable
Distance Offset Operator for Free Form Curves and Surfaces". International
Journal of Computational Geometry & Applications, Vol. 1, Num. 1, March
1991, pp 67-78.
Parameters:
OrigCrv: | To approximate its offset curve with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
OffsetError: | Tolerance control.
|
---|
OffsetAprxFunc: | A function that can be used to approximate an offset
of a curve. If NULL SymbCrvOffset function is selected.
Third parameter of SymbOffCrvFuncType is optional.
|
---|
BezInterp: | If TRUE, control points are interpolated when the curve is
reduced to a Bezier form. Otherwise, control points are
translated OffsetDist amount only, under estimating the
Offset.
|
---|
Returned Value:
CagdCrvStruct *: An approximation to the offset curve, to within
OffsetError.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/symbolic.c:39)
Prototype:
CagdCrvStruct *SymbCrvAdd(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves - add them coordinatewise.
The two curves are promoted to same point type before the multiplication
can take place. Furthermore, order and continuity are matched as well.
Parameters:
Crv1, Crv2: | Two curve to add up coordinatewise.
|
---|
Returned Value:
CagdCrvStruct *: The summation of Crv1 + Crv2 coordinatewise.
|
---|
See Also:
SymbCrvSub
SymbCrvMult
Keywords:
addition
symbolic computation
(symb_lib/arc_len.c:387)
Prototype:
CagdRType SymbCrvArcLen(CagdCrvStruct *Crv, CagdRType Epsilon)
Description:
Computes a tight approximation to the arc length of a curve.
Estimates the arc length scalar field of Crv using SymbCrvArcLenCrv and
evaluate the estimate on the curve's domain boundary.
Parameters:
Crv: | Curve to compute a tight approximation on arc length.
|
---|
Epsilon: | Accuracy control.
|
---|
Returned Value:
CagdRType: The approximated arc length of the given curve Crv.
|
---|
Keywords:
arc length
(symb_lib/arc_len.c:356)
Prototype:
CagdCrvStruct *SymbCrvArcLenCrv(CagdCrvStruct *Crv, CagdRType Epsilon)
Description:
Computes a scalar curve approximating the arc length of given curve Crv.
Arc length is astimated by computing the square of Crv first derivative
approximating its square root and integrating symbolically.
Parameters:
Crv: | To approximate its arc length scalar field.
|
---|
Epsilon: | Accuracy of approximating.
|
---|
Returned Value:
CagdCrvStruct *: A scalar field approximating Crv arc length.
|
---|
Keywords:
arc length
(symb_lib/arc_len.c:71)
Prototype:
CagdRType SymbCrvArcLenPoly(CagdCrvStruct *Crv)
Description:
Computes a bound on the arc length of a curve by computing the length of
its control polygon.
Parameters:
Crv: | To bound its length.
|
---|
Returned Value:
CagdRType: An upper bound on the curve Crv length as the length of
Crv's control polygon.
|
---|
Keywords:
arc length
(symb_lib/arc_len.c:419)
Prototype:
CagdPtStruct *SymbCrvArcLenSteps(CagdCrvStruct *Crv,
CagdRType Length,
CagdRType Epsilon)
Description:
Computes parameter values to move steps of Length at a time on curve Crv.
Returned is a list of parameter values to move along.
Parameters:
Crv: | Curve to compute constant arc Length steps.
|
---|
Length: | The step size.
|
---|
Epsilon: | Accuracy control.
|
---|
Returned Value:
CagdPtStruct *: List of parameter values to march along Crv with arc
Length between them.
|
---|
Keywords:
arc length
(symb_lib/symbzero.c:149)
Prototype:
CagdPtStruct *SymbCrvConstSet(CagdCrvStruct *Crv,
int Axis,
CagdRType Epsilon,
CagdRType ConstVal)
Description:
Computes the constant set of a given curve, in the given axis
(1-3 for X-Z).
Returned is a list of the constant set points holding the parameter
values at Pt[0] of each point.
Parameters:
Crv: | To compute its constant set.
|
---|
Axis: | The axis of Crv to compute constant set for.
|
---|
Epsilon: | Tolerance control.
|
---|
ConstVal: | The value at which to compute the constant set.
|
---|
Returned Value:
CagdPtStruct *: List of parameter values form which Crv has an
value of ConstVal in axis Axis.
|
---|
Keywords:
constant set
zero set
symbolic computation
(symb_lib/symbolic.c:380)
Prototype:
CagdCrvStruct *SymbCrvCrossProd(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves - computes their cross product.
Returned curve is a scalar curve representing the cross product of the
two given curves.
Parameters:
Crv1, Crv2: | Two curve to multiply and compute a cross product for.
|
---|
Returned Value:
CagdCrvStruct *: A scalar curve representing the cross product of
Crv1 x Crv2.
|
---|
See Also:
SymbCrvDotProd
SymbCrvVecDotProd
SymbCrvMult
SymbCrvMultScalar
Keywords:
product
cross product
symbolic computation
(symb_lib/offset.c:913)
Prototype:
CagdCrvStruct *SymbCrvCrvConvolution(CagdCrvStruct *Crv1,
CagdCrvStruct *Crv2,
CagdRType OffsetDist,
CagdRType Tolerance)
Description:
Computes the convolution of the given two curves by matching their
tangents and reparametrizing Crv2.
If Crv2 is NULL, an Arc of radius OffsetDist is used, resulting in an
offset operation of Crv1.
Both Crv1 and Crv2 are assumed to have no inflection points and to
span the same angular domain. That is Crv1'(0) || Crv2'(0) and similarly
Crv1'(1) || Crv2'(1), where || denotes parallel.
Parameters:
Crv1, Crv2: | The two curves to convolve.
|
---|
OffsetDist: | Amount of offset, if Crv2 == NULL. Negative value denotes
other offset/convolution direction.
|
---|
Tolerance: | Of angular discrepancy that is allowed.
|
---|
Returned Value:
CagdCrvStruct *: The offset curve approximation.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
(symb_lib/symbolic.c:203)
Prototype:
CagdCrvStruct *SymbCrvDotProd(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves - computes their dot product.
Returned curve is a scalar curve representing the dot product of the
two given curves.
Parameters:
Crv1, Crv2: | Two curve to multiply and compute a dot product for.
|
---|
Returned Value:
CagdCrvStruct *: A scalar curve representing the dot product of
Crv1 . Crv2.
|
---|
See Also:
SymbCrvScalarScale
SymbCrvVecDotProd
SymbCrvMult
SymbCrvMultScalar
Keywords:
product
dot product
symbolic computation
(symb_lib/symbolic.c:656)
Prototype:
CagdCrvStruct *SymbCrvEnclosedArea(CagdCrvStruct *Crv)
Description:
Given a planar curve, compute its enclosed area field curve.
This has little meaning unless Crv is closed, in which by evaluation
the resulting area filed curve at the end points, the area enclosed by
Crv can be computed.
Parameters:
Crv: | A curve to compute area filed curve for.
|
---|
Returned Value:
CagdCrvStruct *: The area field curve.
|
---|
Keywords:
area
symbolic computation
(symb_lib/symbzero.c:69)
Prototype:
CagdPtStruct *SymbCrvExtremSet(CagdCrvStruct *Crv, int Axis, CagdRType Epsilon)
Description:
Computes the extremum set of a given curve, in given axis (1-3 for X-Z).
Returned is a list of the extreme set points holding the parameter
values at Pt[0] of each point.
One could compute the derivative of the curve and find its zero set.
However, for rational curves, this will double the degree and slow down
the computation considerably.
Parameters:
Crv: | To compute its extremum set.
|
---|
Axis: | The axis of Crv to compute extremum set for.
|
---|
Epsilon: | Tolerance control.
|
---|
Returned Value:
CagdPtStruct *: List of parameter values form which Crv has an
extremum value in axis Axis.
|
---|
Keywords:
extremum set
symbolic computation
(symb_lib/symbolic.c:123)
Prototype:
CagdCrvStruct *SymbCrvInvert(CagdCrvStruct *Crv)
Description:
Given a scalar curve, returns a scalar curve representing the reciprocal
values, by making it rational (if was not one) and flipping the numerator
and the denominator.
Parameters:
Crv: | A scalar curve to compute a reciprocal value for.
|
---|
Returned Value:
CagdCrvStruct *: A rational scalar curve that is equalto the
reciprocal value of Crv.
|
---|
See Also:
SymbCrvDotProd
SymbCrvVecDotProd
SymbCrvMult
SymbCrvMultScalar
Keywords:
division
symbolic computation
reciprocal value
(symb_lib/offset.c:768)
Prototype:
CagdCrvStruct *SymbCrvLeastSquarOffset(CagdCrvStruct *Crv,
CagdRType OffsetDist,
int NumOfSamples,
int NumOfDOF,
int Order,
CagdRType *Tolerance)
Description:
Given a curve and an offset amount OffsetDist, returns an approximation to
the offset curve by least square fitting a curve to samples taken on the
offset curve.
Resulting curve of order Order (degree of Crv if Order == 0) will have
NumOfDOF control points that least sqaure fit NumOfSamples samples on the
offset curve.
Tolerance will be updated to hold an error distance measure.
Parameters:
Crv: | To approximate its offset curve with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
NumOfSamples: | umber of samples to sample the offset curve at.
|
---|
NumOfDOF: | Number of degrees of freedom on the newly computed offset
approximation. This is thesame as the number of control
points the new curve will have.
|
---|
Order: | Of the newly constructed offset approximation. If equal to
zero, the order of Crv will be used.
|
---|
Tolerance: | To return an error estimate in the L-infinity norm.
|
---|
Returned Value:
CagdCrvStruct *: An approximation to the offset curve.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/offset.c:850)
Prototype:
CagdCrvStruct *SymbCrvMatchingOffset(CagdCrvStruct *Crv,
CagdRType OffsetDist,
CagdRType Tolerance)
Description:
Computes an offset to a freeform curve using matching of tangent fields.
The given curve is split at all its inflection points, made sure it spans
less than 90 degrees, and then is matched against an arc of the proper
angular span of tangents.
Unlike other offset methods, this method allways preserves the distance
between the original curve ans its offset. The error in this methods can
surface only in the non orthogonality of the offset direction.
Parameters:
Crv: | To approximate its offset curve with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
Tolerance: | Of angular discrepancy that is allowed.
|
---|
Returned Value:
CagdCrvStruct *: The offset curve approximation.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvCrvConvolution
Keywords:
(symb_lib/symbolic.c:1442)
Prototype:
CagdCrvStruct *SymbCrvMergeScalar(CagdCrvStruct *CrvW,
CagdCrvStruct *CrvX,
CagdCrvStruct *CrvY,
CagdCrvStruct *CrvZ)
Description:
Given a set of scalar curves, treat them as coordinates into a new curve.
Assumes at least CrvX is not NULL in which a scalar curve is returned.
Assumes CrvX/Y/Z/W are either E1 or P1 in which the weights are assumed
to be identical and can be ignored if CrvW exists or copied otheriwse.
Parameters:
CrvW: | The weight component of new constructed curve, if have any.
|
---|
CrvX: | The X component of new constructed curve.
|
---|
CrvY: | The Y component of new constructed curve, if have any.
|
---|
CrvZ: | The Z component of new constructed curve, if have any.
|
---|
Returned Value:
CagdCrvStruct *: A new curve constructed from given scalar curves.
|
---|
See Also:
SymbSrfMergeScalar
SymbCrvSplitScalar
Keywords:
merge
symbolic computation
(symb_lib/symbolic.c:85)
Prototype:
CagdCrvStruct *SymbCrvMult(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves - multiply them coordinatewise.
The two curves are promoted to same point type before the multiplication
can take place.
Parameters:
Crv1, Crv2: | Two curve to multiply coordinatewise.
|
---|
Returned Value:
CagdCrvStruct *: The product of Crv1 * Crv2 coordinatewise.
|
---|
See Also:
SymbCrvDotProd
SymbCrvVecDotProd
SymbCrvInvert
SymbCrvMultScalar
Keywords:
product
symbolic computation
(symb_lib/symbolic.c:312)
Prototype:
CagdCrvStruct *SymbCrvMultScalar(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves - a vector curve Crv1 and a scalar curve Crv2, multiply
all Crv1's coordinates by the scalar curve Crv2.
Returned curve is a curve representing the product of the two given
curves.
Parameters:
Crv1, Crv2: | Two curve to multiply.
|
---|
Returned Value:
CagdCrvStruct *: A curve representing the product of Crv1 and Crv2.
|
---|
See Also:
SymbCrvDotProd
SymbCrvVecDotProd
SymbCrvMult
SymbCrvCrossProd
Keywords:
product
symbolic computation
(symb_lib/multires.c:237)
Prototype:
CagdCrvStruct *SymbCrvMultiResCompos(SymbMultiResCrvStruct *MRCrv)
Description:
Given a multi resolution decomposition of a Bspline curve, computes the
regular Bspline curve out of it. *
Parameters:
MRCrv: | A multi resolution decomposition of a curve.
|
---|
Returned Value:
CagdCrvStruct *: A curve that adds up all components of the multi
resolution decomposition MRCrv.
|
---|
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:266)
Prototype:
CagdCrvStruct *SymbCrvMultiResComposAtT(SymbMultiResCrvStruct *MRCrv,
CagdRType T)
Description:
Given a multi resolution decomposition of a Bspline curve, computes a
regular Bspline curve out of it representing the decomposed curve at
the multi resolution hierarchy level of T.
Although decomposition is discrete, T can be any real number between
these discrete levels and a linear interpolation of adjacent levels is
exploited.
Parameters:
MRCrv: | A multi resolution decomposition of a curve.
|
---|
T: | A mult resolution hierarcy level to compute curve for.
|
---|
Returned Value:
CagdCrvStruct *: A curve that adds up all components of the multi
resolution decomposition MRCrv up to and including
level T.
|
---|
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:575)
Prototype:
SymbMultiResCrvStruct *SymbCrvMultiResCopy(SymbMultiResCrvStruct *MRCrvOrig)
Description:
Given a multi resolution decomposition of a Bspline curve, copy it.
Parameters:
MRCrv: | A multi resolution decomposition of a curve to copy.
|
---|
Returned Value:
SymbMultiResCrvStruct *: A duplicated structure of MRCrv.
|
---|
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:37)
Prototype:
SymbMultiResCrvStruct *SymbCrvMultiResDecomp(CagdCrvStruct *Crv, int Discont)
Description:
Given a Bspline curve, computes a hierarch of Bspline curves, each being
represented using a subspace of the previous, upto a curve with no
interior knots (i.e. a polynomial Bezier).
However, if Discont == TRUE, then C1 discontinuities are preserved
through out the hierarchy decomposition.
Each level in hierarchy has approximately half the number of control
points of the previous one.
Least square curve fitting is used to build the hierarchy.
Parameters:
Crv: | To compute a least square multi resolution decomposition for.
|
---|
Discont: | Do we want to preserve discontinuities?
|
---|
Returned Value:
SymbMultiResCrvStruct *: A multi resolution curve structure hold the
multi resolution decomposition of Crv.
|
---|
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:325)
Prototype:
void SymbCrvMultiResEdit(SymbMultiResCrvStruct *MRCrv,
CagdRType t,
CagdVType TransDir,
CagdRType Level,
CagdRType FracLevel)
Description:
Given a multi resolution decomposition of a Bspline curve, edit it by
modifying its Level'th Level according to the TransDir of Position at
parametr t.
Level can be a fraction number between the discrete levels of the
decomposition denoting a linear blend of two neighboring discrete levels.
Editing is performed in place.
Parameters:
MRCrv: | A multi resolution decomposition of a curve to edit it in
place.
|
---|
t: | Parameter value at which to modify MRCrv.
|
---|
TransDir: | Directional tranlation transformation to apply.
|
---|
Level: | Of multi resolution hierarchy to edit.
|
---|
FracLevel: | The fraction level to edit - will blend two neighboring
levels.
|
---|
SpanDiscont: | re we allowed to cross over discontinuities?
|
---|
Returned Value:
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:514)
Prototype:
void SymbCrvMultiResFree(SymbMultiResCrvStruct *MRCrv)
Description:
Given a multi resolution decomposition of a Bspline curve, free it.
Parameters:
MRCrv: | A multi resolution decomposition of a curve to free.
|
---|
Returned Value:
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:544)
Prototype:
SymbMultiResCrvStruct *SymbCrvMultiResNew(int Levels, CagdBType Periodic)
Description:
Allocates a data structure for multi resolution decomposition of a Bspline
curve of Levels levels and possiblt periodic.
Parameters:
Levels: | Number of levels to expect in the decomposition.
|
---|
Periodic: | Is the curve periodic?
|
---|
Returned Value:
SymbMultiResCrvStruct *: A structure to hold a multi resolution
decomposition of a curve of Levels levels.
|
---|
Keywords:
multi resolution
least square decomposition
(symb_lib/multires.c:432)
Prototype:
CagdRType *SymbCrvMultiResRefineLevel(SymbMultiResCrvStruct *MRCrv,
CagdRType T,
int SpanDiscont)
Description:
Given a multi resolution decomposition of a Bspline curve, refine it at
neighborhood of parameter value t, in place.
Parameters:
MRCrv: | A multi resolution decomposition of a curve, to refine in
place.
|
---|
T: | Parameter value at which to refine MRCrv.
|
---|
SpanDiscont: | o we want to refine beyond discontinuities?
|
---|
Returned Value:
CagdRType *: A pointer to an array of two real numbers holding the
domain in MRCrv that was refined.
|
---|
Keywords:
multi resolution
least square decomposition
(symb_lib/offset.c:51)
Prototype:
CagdCrvStruct *SymbCrvOffset(CagdCrvStruct *Crv,
CagdRType OffsetDist,
CagdBType BezInterp)
Description:
Given a curve and an offset amount OffsetDist, returns an approximation to
the offset curve by offseting the control polygon in the normal direction.
Parameters:
Crv: | To approximate its offset curve with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
BezInterp: | If TRUE, control points are interpolated when the curve is
reduced to a Bezier form. Otherwise, control points are
translated OffsetDist amount only, under estimating the
Offset.
|
---|
Returned Value:
CagdCrvStruct *: An approximation to the offset curve.
|
---|
See Also:
SymbCrvSubdivOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/symbzero.c:369)
Prototype:
CagdBType SymbCrvPosNegWeights(CagdCrvStruct *Crv)
Description:
Returns TRUE iff the Crv is not rational or rational with weights that are
entirely positive or entirely negative.
Parameters:
Crv: | To examine for same sign weights, if any.
|
---|
Returned Value:
CagdBType: TRUE if no weights or all of same sign.
|
---|
Keywords:
symbolic computation
(symb_lib/symbolic.c:498)
Prototype:
CagdCrvStruct *SymbCrvRtnlMult(CagdCrvStruct *Crv1X,
CagdCrvStruct *Crv1W,
CagdCrvStruct *Crv2X,
CagdCrvStruct *Crv2W,
CagdBType OperationAdd)
Description:
Given two curves - multiply them using the quotient product rule:
X = X1 W2 +/- X2 W1
All provided curves are assumed to be non rational scalar curves.
Returned is a non rational scalar curve (CAGD_PT_E1_TYPE).
Parameters:
Crv1X: | Numerator of first curve.
|
---|
Crv1W: | Denominator of first curve.
|
---|
Crv2X: | Numerator of second curve.
|
---|
Crv2W: | Denominator of second curve.
|
---|
OperationAdd: | TRUE for addition, FALSE for subtraction.
|
---|
Returned Value:
CagdCrvStruct *: The result of Crv1X Crv2W +/- Crv2X Crv1W.
|
---|
See Also:
SymbCrvDotProd
SymbCrvVecDotProd
SymbCrvMult
SymbCrvMultScalar
Keywords:
product
symbolic computation
(symb_lib/symbolic.c:170)
Prototype:
CagdCrvStruct *SymbCrvScalarScale(CagdCrvStruct *Crv, CagdRType Scale)
Description:
Given a curve, scale it by Scale.
Parameters:
Crv: | A curve to scale by magnitude Scale.
|
---|
Scale: | Scaling factor.
|
---|
Returned Value:
CagdCrvStruct *: A curves scaled by Scale compared to Crv.
|
---|
See Also:
SymbCrvDotProd
SymbCrvVecDotProd
SymbCrvMult
SymbCrvMultScalar
Keywords:
scaling
symbolic computation
(symb_lib/symbolic.c:1387)
Prototype:
void SymbCrvSplitScalar(CagdCrvStruct *Crv,
CagdCrvStruct **CrvW,
CagdCrvStruct **CrvX,
CagdCrvStruct **CrvY,
CagdCrvStruct **CrvZ)
Description:
Given a curve splits it to its scalar component curves. Ignores all
dimensions beyond the third, Z, dimension.
Parameters:
Crv: | Curve to split.
|
---|
CrvW: | The weight component of Crv, if have any.
|
---|
CrvX: | The X component of Crv.
|
---|
CrvY: | The Y component of Crv, if have any.
|
---|
CrvZ: | The Z component of Crv, if have any.
|
---|
Returned Value:
See Also:
SymbSrfSplitScalar
SymbCrvMergeScalar
Keywords:
split
symbolic computation
(symb_lib/arc_len.c:244)
Prototype:
CagdCrvStruct *SymbCrvSqrtScalar(CagdCrvStruct *OrigCrv, CagdRType Epsilon)
Description:
Computes the curve which is a square root approximation to a given scalar
curve, to within epsilon.
Parameters:
OrigCrv: | Scalar curve to approximate its square root function.
|
---|
Epsilon: | Accuracy of approximation.
|
---|
Returned Value:
CagdCrvStruct *: A curve approximating the square root of OrigCrv.
|
---|
Keywords:
square root
(symb_lib/symbolic.c:62)
Prototype:
CagdCrvStruct *SymbCrvSub(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves - subtract them coordinatewise.
The two curves are promoted to same point type before the multiplication
can take place. Furthermore, order and continuity are matched as well.
Parameters:
Crv1, Crv2: | Two curve to subtract coordinatewise.
|
---|
Returned Value:
CagdCrvStruct *: The difference of Crv1 - Crv2 coordinatewise.
|
---|
See Also:
SymbCrvAdd
SymbCrvMult
Keywords:
subtraction
symbolic computation
(symb_lib/offset.c:183)
Prototype:
CagdCrvStruct *SymbCrvSubdivOffset(CagdCrvStruct *Crv,
CagdRType OffsetDist,
CagdRType Tolerance,
CagdBType BezInterp)
Description:
Given a curve and an offset amount OffsetDist, returns an approximation to
the offset curve by offseting the control polygon in the normal direction.
If resulting offset is not satisfying the required tolerance the curve
is subdivided and the algorithm recurses on both parts.
Parameters:
Crv: | To approximate its offset curve with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
Tolerance: | Accuracy control.
|
---|
BezInterp: | If TRUE, control points are interpolated when the curve is
reduced to a Bezier form. Otherwise, control points are
translated OffsetDist amount only, under estimating the
Offset.
|
---|
Returned Value:
CagdCrvStruct *: An approximation to the offset curve, to within
Tolerance.
|
---|
See Also:
SymbCrvOffset
SymbSrfOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/arc_len.c:112)
Prototype:
CagdCrvStruct *SymbCrvUnitLenScalar(CagdCrvStruct *OrigCrv,
CagdBType Mult,
CagdRType Epsilon)
Description:
Normalizes the given vector field curve to be a unit length curve, by
computing a scalar curve to multiply with this vector field curve.
Returns the multiplied curve if Mult, or otherwise just the scalar
curve.
Parameters:
OrigCrv: | Curve to approximate a unit size for.
|
---|
Mult: | Do we want to multiply the computed scalar curve with Crv?
|
---|
Epsilon: | Accuracy required of this approximation.
|
---|
Returned Value:
CagdCrvStruct *: A scalar curve to multiply OrigCrv so a unit size
curve will return if Mult is FALSE, or the actual
unit size vector field curve, if Mult.
|
---|
Keywords:
unit vector field
(symb_lib/symbolic.c:252)
Prototype:
CagdCrvStruct *SymbCrvVecDotProd(CagdCrvStruct *Crv, CagdVType Vec)
Description:
Given a curve and a vector - computes their dot product.
Returned curve is a scalar curve representing the dot product.
Parameters:
Crv: | Curve to multiply and compute a dot product for.
|
---|
Vec: | Vector to project Crv onto.
|
---|
Returned Value:
CagdCrvStruct *: A scalar curve representing the dot product of
Crv . Vec.
|
---|
See Also:
SymbCrvDotProd
SymbCrvMult
SymbCrvMultScalar
SymbCrvCrossProd
Keywords:
product
dot product
symbolic computation
(symb_lib/symbzero.c:43)
Prototype:
CagdPtStruct *SymbCrvZeroSet(CagdCrvStruct *Crv, int Axis, CagdRType Epsilon)
Description:
Computes the zero set of a given curve, in the given axis (1-3 for X-Z).
Returned is a list of the zero set points holding the parameter values
att Pt[0] of each point.
Parameters:
Crv: | To compute its zero set.
|
---|
Axis: | The axis of Crv to compute zero set for.
|
---|
Epsilon: | Tolerance control.
|
---|
Returned Value:
CagdPtStruct *: List of parameter values form which Crv is zero in
axis Axis.
|
---|
Keywords:
zero set
symbolic computation
(symb_lib/symb_err.c:67)
Prototype:
char *SymbDescribeError(SymbFatalErrorType ErrorNum)
Description:
Returns a string describing a the given error. Errors can be raised by
any member of this symb library as well as other users. Raised error will
cause an invokation of SymbFatalError function which decides how to handle
this error. SymbFatalError can for example, invoke this routine with the
error type, print the appropriate message and quit the program.
Parameters:
ErrorNum: | Type of the error that was raised.
|
---|
Returned Value:
char *: A string describing the error type.
|
---|
Keywords:
error handling
(symb_lib/distance.c:166)
Prototype:
CagdRType SymbDistCrvLine(CagdCrvStruct *Crv,
CagdLType Line,
CagdBType MinDist,
CagdRType Epsilon)
Description:
Given a curve and a line, finds the nearest point (if MinDist) or the
farest location (if MinDist FALSE) from the curve to the given line.
Returned is the parameter value of the curve.
Let Crv be (x(t), y(t)). By substituting x(t) and y(t) into the line
equation, we derive the distance function.
Its zero set, combined with the zero set of its derivative provide the
needed extreme distances.
Parameters:
Crv: | The curve to find its nearest (farest) point to Line.
|
---|
Line: | The line to find the nearest (farest) point on Crv to it.
|
---|
MinDist: | If TRUE nearest points is needed, if FALSE farest.
|
---|
Epsilon: | Accuracy of computation.
|
---|
Returned Value:
CagdRType: Parameter value in the parameter space of Crv of the
nearest (farest) point to line Line.
|
---|
Keywords:
curve line distance
(symb_lib/distance.c:47)
Prototype:
CagdRType SymbDistCrvPoint(CagdCrvStruct *Crv,
CagdPType Pt,
CagdBType MinDist,
CagdRType Epsilon)
Description:
Given a curve and a point, finds the nearest point (if MinDist) or the
farest location (if MinDist FALSE) from the curve to the given point.
Returned is the parameter value of the curve.
Computes the zero set of (Crv(t) - Pt) . Crv'(t).
Parameters:
Crv: | The curve to find its nearest (farest) point to Pt.
|
---|
Pt: | The point to find the nearest (farest) point on Crv to it.
|
---|
MinDist: | If TRUE nearest points is needed, if FALSE farest.
|
---|
Epsilon: | Accuracy of computation.
|
---|
Returned Value:
CagdRType: Parameter value in the parameter space of Crv of the
nearest (farest) point to point Pt.
|
---|
Keywords:
curve point distance
(symb_lib/symbolic.c:1742)
Prototype:
CagdRType *SymbExtremumCntPtVals(CagdRType **Points,
int Length,
CagdBType FindMinimum)
Description:
Given a control polygon/mesh, computes the extremum values of them all.
Parameters:
Points: | To scan for extremum values.
|
---|
Length: | Length of each vector in Points.
|
---|
FindMinimum: | TRUE for minimum, FALSE for maximum.
|
---|
Returned Value:
CagdRType *: A vector holding PType point with the extremum values of
each axis independently.
|
---|
Keywords:
extremum values
symbolic computation
(symb_lib/symb_ftl.c:27)
Prototype:
void SymbFatalError(SymbFatalErrorType ErrID)
Description:
Trap Symb_lib errors right here. Provides a default error handler for the
symb library. Gets an error description using SymbDescribeError, prints it
and exit the program using exit.
Parameters:
ErrID: | Error type that was raised.
|
---|
Returned Value:
Keywords:
error handling
(symb_lib/distance.c:241)
Prototype:
CagdPtStruct *SymbLclDistCrvLine(CagdCrvStruct *Crv,
CagdLType Line,
CagdRType Epsilon,
CagdBType InterPos,
CagdBType ExtremPos)
Description:
Given a curve and a line, finds the local extreme distance points on the
curve to the given line.
Returned is a list of parameter value with local extreme distances.
Let Crv be (x(t), y(t)). By substituting x(t) and y(t) into the line
equation, we derive the distance function.
Its zero set, possibly combined with the zero set of its derivative
provide the needed extreme distances.
Parameters:
Crv: | The curve to find its nearest (farest) point to Line.
|
---|
Line: | The line to find the nearest (farest) point on Crv to it.
|
---|
Epsilon: | Accuracy of computation.
|
---|
InterPos: | Do we want the intersection locations?
|
---|
ExtremPos: | Do we want the extremum distance locations?
|
---|
Returned Value:
CagdPtStruct *: A list of parameter values of extreme distance
locations.
|
---|
Keywords:
curve line distance
(symb_lib/distance.c:116)
Prototype:
CagdPtStruct *SymbLclDistCrvPoint(CagdCrvStruct *Crv,
CagdPType Pt,
CagdRType Epsilon)
Description:
Given a curve and a point, find the local extremum distance points on the
curve to the given point.
Returned is a list of parameter value with local extremum.
Computes the zero set of (Crv(t) - Pt) . Crv'(t).
Parameters:
Crv: | The curve to find its extreme distance locations to Pt.
|
---|
Pt: | The point to find the extreme distance locations from Crv.
|
---|
Epsilon: | Accuracy of computation.
|
---|
Returned Value:
CagdPtStruct *: A list of parameter values of extreme distance
locations.
|
---|
Keywords:
curve point distance
(symb_lib/arc_len.c:31)
Prototype:
CagdCrvStruct *SymbLimitCrvArcLen(CagdCrvStruct *Crv, CagdRType MaxLen)
Description:
Subdivides the given curves to curves, each with size of control polygon
less than or equal to MaxLen. Returned is a list of curves.
Parameters:
Crv: | To subdivide into curves, each with control polygon length
less than MaxLen.
|
---|
MaxLen: | Maximum length of control polygon to allow.
|
---|
Returned Value:
CagdCrvStruct *: List of subdivided curves from Crv, each with control
polygon size of less than MaxLen.
|
---|
Keywords:
arc length
(symb_lib/curvatur.c:414)
Prototype:
CagdCrvStruct *SymbMakePosCrvCtlPolyPos(CagdCrvStruct *OrigCrv)
Description:
Given a scalar curve that is positive, refine it until all its control
points has positive coefficients. Always returns a Bspline curve.
Parameters:
OrigCrv: | To refine until all its control points are non negative.
|
---|
Returned Value:
CagdCrvStruct *: Refined positive curve with positive control points.
|
---|
Keywords:
refinement
(symb_lib/symbolic.c:1330)
Prototype:
void SymbMeshAddSub(CagdRType **DestPoints,
CagdRType **Points1,
CagdRType **Points2,
CagdPointType PType,
int Size,
CagdBType OperationAdd)
Description:
Given two control polygons/meshes - add them coordinatewise.
If mesh is rational, weights are assumed identical and are just copied.
Parameters:
DestPoints: | Where addition or difference result should go to.
|
---|
Points1: | First control polygon/mesh.
|
---|
Points2: | Second control polygon/mesh.
|
---|
PType: | Type of points we are dealing with.
|
---|
Size: | Length of each vector in Points1/2.
|
---|
OperationAdd: | TRUE of addition, FALSE for subtraction.
|
---|
Returned Value:
See Also:
SymbSrfSub
SymbSrfAdd
Keywords:
addition
subtraction
symbolic computation
(symb_lib/nrmlcone.c:31)
Prototype:
SymbNormalConeStruct *SymbNormalConeForSrf(CagdSrfStruct *Srf)
Description:
Computes a normal cone for a given surface, by computing the normal field
of the surface and deriving the angular span of this normal field by
testing the angular span of all control vector in the normal field.
A normal field is searched for as "_NormalSrf" attribute in Srf or
computed locally of no such attribute is found.
Parameters:
Srf: | To compute a normal cone for.
|
---|
Returned Value:
SymbNormalConeStruct *: The computed normal cone.
|
---|
See Also:
SymbNormalConeOverlap
Keywords:
normals
normal bound
(symb_lib/nrmlcone.c:123)
Prototype:
CagdBType SymbNormalConeOverlap(SymbNormalConeStruct *NormalCone1,
SymbNormalConeStruct *NormalCone2)
Description:
Tests if the given two normal cones overlap or not.
Parameters:
NormalCone1, NormalCone2: | The two normal cones to test for angular
overlap.
|
---|
Returned Value:
CagdBType: TRUE if overlap, FALSE otherwise.
|
---|
See Also:
SymbNormalConeOverlap
Keywords:
normals
normal bound
(symb_lib/prisa.c:122)
Prototype:
CagdSrfStruct *SymbPiecewiseRuledSrfApprox(CagdSrfStruct *Srf,
CagdBType ConsistentDir,
CagdRType Epsilon,
CagdSrfDirType Dir)
Description:
Constructs a piecewise ruled surface approximation to the given surface,
Srf, in the given direction, Dir, that is close to the surface to within
Epsilon.
If ConsitentDir then ruled surface parametrization is set to be the
same as original surface Srf. Otherwise, ruling dir is always
CAGD_CONST_V_DIR.
Surface is assumed to have point types E3 or P3 only.
Parameters:
Srf: | To approximate using piecewise ruled surfaces.
|
---|
ConsistentDir: | o we want parametrization to be the same as Srf?
|
---|
Epsilon: | Accuracy of piecewise ruled surface approximation.
|
---|
Dir: | Direction of piecewise ruled surface approximation.
Either U or V.
|
---|
Returned Value:
CagdSrfStruct *: A list of ruled surfaces approximating Srf to within
Epsilon in direction Dir.
|
---|
Keywords:
layout
prisa
ruled surface approximation
(symb_lib/prisa.c:362)
Prototype:
CagdSrfStruct *SymbPrisaRuledSrf(CagdSrfStruct *Srf,
int SamplesPerCurve,
CagdRType Space,
CagdVType Offset)
Description:
Layout a single ruled surface, by approximating it as a set of polygons.
The given ruled surface might be non-developable, in which case
approximation will be of a surface with no twist.
The ruled surface is assumed to be constructed using CagdRuledSrf and
that the ruled direction is consisnt and is always CAGD_CONST_V_DIR.
Parameters:
Srf: | A ruled surface to layout flat on the XY plane.
|
---|
SamplesPerCurve: | uring the approximation of a ruled surface as a
developable surface.
|
---|
Space: | Increment on Y on the offset vector, after this
surface was placed in the XY plane.
|
---|
Offset: | A vector in the XY plane to denote the amount of
translation for the flatten surface in the XY plane.
|
---|
Returned Value:
CagdSrfStruct *: A planar surface in the XY plane approximating the
falttening process of Srf.
|
---|
Keywords:
layout
prisa
(symb_lib/symbolic.c:1640)
Prototype:
CagdCrvStruct *SymbPrmtSclrCrvTo2D(CagdCrvStruct *Crv,
CagdRType Min,
CagdRType Max)
Description:
Promote a scalar curve to two dimensions by moving the scalar axis to be
the Y axis and adding monotone X axis.
Parameters:
Crv: | Scalar curve to promose to a two dimensional one.
|
---|
Min: | Minimum of new monotone X axis.
|
---|
Max: | Maximum of new monotone X axis.
|
---|
Returned Value:
CagdCrvStruct *: A two dimensional curve.
|
---|
See Also:
SymbPrmtSclrSrfTo3D
Keywords:
promotion
conversion
symbolic computation
(symb_lib/symbolic.c:1689)
Prototype:
CagdSrfStruct *SymbPrmtSclrSrfTo3D(CagdSrfStruct *Srf,
CagdRType UMin,
CagdRType UMax,
CagdRType VMin,
CagdRType VMax)
Description:
Promote a scalar surface to three dimensions by moving the scalar axis to
be the Z axis and adding monotone X and Y axes.
Parameters:
Srf: |
|
---|
UMin: | Minimum of new monotone X axis.
|
---|
UMax: | Maximum of new monotone X axis.
|
---|
VMin: | Minimum of new monotone Y axis.
|
---|
VMax: | Maximum of new monotone X axis.
|
---|
Returned Value:
CagdSrfStruct *: A three dimensional surface.
|
---|
See Also:
SymbPrmtSclrCrvTo2D
Keywords:
promotion
conversion
symbolic computation
(symb_lib/adap_iso.c:57)
Prototype:
void SymbSetAdapIsoExtractMinLevel(int MinLevel)
Description:
Sets minimum level of subdivision forced in the adaptive iso extraction.
Parameters:
MinLevel: | At least that many subdivision will occur.
|
---|
Returned Value:
Keywords:
adaptive isocurves
(symb_lib/symbpoly.c:165)
Prototype:
CagdCrvStruct *SymbSrf2Curves(CagdSrfStruct *Srf, int NumOfIsocurves[2])
Description:
Routine to extract from a surface NumOfIsoline isocurve list
in each param. direction.
Iso parametric curves are sampled equally spaced in parametric space.
NULL is returned in case of an error, otherwise list of CagdCrvStruct.
Parameters:
Srf: | To extract isoparametric curves from.
|
---|
NumOfIsocurves: | In each (U or V) direction.
|
---|
Returned Value:
CagdCrvStruct *: List of extracted isoparametric curves. These curves
inherit the order and continuity of the original Srf.
NULL is returned in case of an error.
|
---|
See Also:
BspSrf2PCurves
BzrSrf2Curves
Keywords:
curves
isoparametric curves
(symb_lib/curvatur.c:655)
Prototype:
CagdSrfStruct *SymbSrf2DDeterminant(CagdSrfStruct *Srf11,
CagdSrfStruct *Srf12,
CagdSrfStruct *Srf21,
CagdSrfStruct *Srf22)
Description:
Computes the expression of Srf11 * Srf22 - Srf12 * Srf21, which is a
determinant of a 2 by 2 matrix.
Parameters:
Srf11, Srf12, Srf21, Srf22: | The four factors of the determinant.
|
---|
Returned Value:
CagdSrfStruct *: A scalar field representing the determinant computation.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
determinant
(symb_lib/symbsply.c:290)
Prototype:
CagdRType SymbSrf2OptPolysBilinPolyError(CagdSrfStruct *Srf,
CagdSrfDirType Dir)
Description:
Routine to estimate the curvature of the patch using a bilinear approx.
Parameters:
Srf: | To estimate curvature for.
|
---|
Dir: | Currently not used.
|
---|
Returned Value:
CagdRType: Curvature estimated.
|
---|
Keywords:
polygonization
surface approximation
(symb_lib/symbsply.c:201)
Prototype:
CagdRType SymbSrf2OptPolysCurvatureError(CagdSrfStruct *Srf,
CagdSrfDirType Dir)
Description:
Routine to estimate the curvature of the patch using k1^2 + k2^2.
Assumes the availability of the GlblCrvtrSqrSrf for Srf.
This estimate is too loose and in fact is not recommended!
Parameters:
Srf: | To estimate curvature for.
|
---|
Dir: | Currently not used.
|
---|
Returned Value:
CagdRType: Curvature estimated.
|
---|
Keywords:
polygonization
surface approximation
(symb_lib/symbsply.c:174)
Prototype:
void SymbSrf2OptPolysCurvatureErrorPrep(CagdSrfStruct *Srf)
Description:
Routine to compute the scalar field of k1^2 + k2^2 (k1, k2 are principal
curvatures) for the surface Srf, into GlblCrvtrSqrSrf.
This scalar field is used by SymbSrf2OptPolysCurvatureError function.
Parameters:
Srf: | To compute the curvature bound for as an optional preprocess
for function SymbSrf2OptPolysCurvatureError.
|
---|
Returned Value:
Keywords:
polygonization
surface approximation
(symb_lib/symbsply.c:357)
Prototype:
void SymbSrf2OptPolysIsoDirCurvatureErrorPrep(CagdSrfStruct *Srf)
Description:
Routine to precompute the scalar field of kn^u and kn^v (the normal
curvatures in the iso parametric directions).
These scalar fields are used to determined the prefered subdivision
location of Srf.
Parameters:
Srf: | To compute the curvature bound in the isoparametric direction.
|
---|
Returned Value:
Keywords:
polygonization
surface approximation
(symb_lib/symbsply.c:402)
Prototype:
CagdPolygonStruct *SymbSrf2OptimalPolygons(CagdSrfStruct *Srf,
CagdRType Tolerance,
SymbPlSubdivStrategyType SubdivDirStrategy,
SymbPlErrorFuncType SrfPolyApproxErr,
CagdBType ComputeNormals,
CagdBType FourPerFlat,
CagdBType ComputeUV)
Description:
Routine to convert a single surface to a set of triangles approximating
it.
FineNess is controlled via a function that returns an error measure
SrfPolyApproxError that is guaranteed to be less than Tolerance.
Parameters:
Srf: | To convert and approximate using triangles.
|
---|
Tolerance: | Accuracy control.
|
---|
SubdivDirStrategy: | lternatively in U and V, direction that minimizes
the error, etc.
|
---|
SrfPolyApproxErr: | Using bilinear curvature estimate, k1^2 + k2^2
estimate, etc.
|
---|
ComputeNormals: | Do we want normals to be computed as well?
|
---|
FourPerFlat: | If TRUE, four triangle per flat surface patch are
created, otherwise only two.
|
---|
ComputeUV: | Do we want UV parameter values with the vertices of
the triangles?
|
---|
Returned Value:
CagdPolygonStruct *: Resulting polygons that approximates Srf.
|
---|
Keywords:
approximation
conversion
(symb_lib/symbpoly.c:55)
Prototype:
CagdPolygonStruct *SymbSrf2Polygons(CagdSrfStruct *Srf,
int FineNess,
CagdBType ComputeNormals,
CagdBType FourPerFlat,
CagdBType ComputeUV)
Description:
Routine to convert a single surface to set of triangles approximating it.
FineNess is a fineness control on result and the larger it is more
triangles may result.
A value of 10 is a good starting value.
NULL is returned in case of an error, otherwise list of CagdPolygonStruct.
Parameters:
Srf: | To approximate into triangles.
|
---|
FineNess: | Control on accuracy, the higher the finer.
|
---|
ComputeNormals: | If TRUE, normal information is also computed.
|
---|
FourPerFlat: | If TRUE, four triangles are created per flat surface.
If FALSE, only 2 triangles are created.
|
---|
ComputeUV: | If TRUE, UV values are stored and returned as well.
|
---|
Returned Value:
CagdPolygonStruct *: A list of polygons with optional normal and/or
UV parametric information.
NULL is returned in case of an error.
|
---|
See Also:
BzrSrf2Polygons
IritSurface2Polygons
IritTrimSrf2Polygons
BspSrf2Polygons
TrimSrf2Polygons
Keywords:
polygonization
surface approximation
(symb_lib/symbpoly.c:110)
Prototype:
CagdPolylineStruct *SymbSrf2Polylines(CagdSrfStruct *Srf,
int NumOfIsocurves[2],
int SamplesPerCurve,
int Optimal)
Description:
Routine to convert a single surface to NumOfIsolines polylines in each
parametric direction with SamplesPerCurve in each isoparametric curve.
Polyline are always E3 of CagdPolylineStruct type.
NULL is returned in case of an error, otherwise list of
CagdPolylineStruct. Attempt is made to extract isolines along C1
discontinuities first.
Parameters:
Srf: | Srf to extract isoparametric curves from.
|
---|
NumOfIsocurves: | To extarct from Srf in each (U or V) direction.
|
---|
SamplesPerCurve: | Fineness control on piecewise linear curve
approximation.
|
---|
Optimal: | Use optimal approximation of isocurves.
|
---|
Returned Value:
CagdPolylineStruct *: List of polylines representing a piecewise linear
approximation of the extracted isoparamteric
curves or NULL is case of an error.
|
---|
See Also:
BspSrf2Polylines
BzrSrf2Polylines
IritSurface2Polylines
IritTrimSrf2Polylines
TrimSrf2Polylines
Keywords:
polylines
isoparametric curves
(symb_lib/symbolic.c:732)
Prototype:
CagdSrfStruct *SymbSrfAdd(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two surfaces - add them coordinatewise.
The two surfaces are promoted to same point type before the
multiplication can take place. Furthermore, order and continuity are
matched as well.
Parameters:
Srf1, Srf2: | Two surface to add up coordinatewise.
|
---|
Returned Value:
CagdSrfStruct *: The summation of Srf1 + Srf2 coordinatewise.
|
---|
See Also:
SymbSrfSub
SymbMeshAddSub
SymbSrfMult
Keywords:
addition
symbolic computation
(symb_lib/symbolic.c:1021)
Prototype:
CagdSrfStruct *SymbSrfCrossProd(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two surfaces - computes their cross product.
Returned surface is a scalar surface representing the cross product of
the two given surfaces.
Parameters:
Srf1, Srf2: | Two surface to multiply and compute a cross product for.
|
---|
Returned Value:
CagdSrfStruct *: A scalar surface representing the cross product of
Srf1 x Srf2.
|
---|
See Also:
SymbSrfDotProd
SymbSrfVecDotProd
SymbSrfScalarScale
SymbSrfMultScalar
SymbSrfInvert
Keywords:
product
cross product
symbolic computation
(symb_lib/curvatur.c:1058)
Prototype:
CagdSrfStruct *SymbSrfCurvatureUpperBound(CagdSrfStruct *Srf)
Description:
Computes curvature upper bound as Xi = k1^2 + k2^2, where k1 and k2 are
the principal curvatures.
Gij are the coefficients of the first fundamental form and Lij are of the
second, using non unit normal n,
( G11 L22 + G22 L11 - 2 G12 L12 )^2 - 2 |G| |L|
Xi = -----------------------------------------------
|G|^2 ||n||^2
See: "Second Order Surface Analysis Using Hybrid of Symbolic and Numeric
Operators", By Gershon Elber and Elaine Cohen, Transaction on graphics,
Vol. 12, No. 2, pp 160-178, April 1993.
Parameters:
Srf: | Surface to compute curvature bound for.
|
---|
Returned Value:
CagdSrfStruct *: A scalar field representing the curvature bound.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfIsoDirNormalCurvatureBound
Keywords:
curvature
(symb_lib/distance.c:317)
Prototype:
CagdSrfStruct *SymbSrfDistCrvCrv(CagdCrvStruct *Crv1, CagdCrvStruct *Crv2)
Description:
Given two curves, creates a bivariate scalar surface representing the
distance function square, between them.
Parameters:
Crv1, Crv2: | The two curves, Crv1(u) and Crv2(v), to form their distance
function square between them as a bivariate function.
|
---|
Returned Value:
CagdSrfStruct *: The distance function square d2(u, v) of the distance
from Crv1(u) to Crv2(v).
|
---|
See Also:
SymvCrvCrvInter
SymbSrfDistFindPoints
Keywords:
curve curve distance
(symb_lib/distance.c:385)
Prototype:
CagdPtStruct *SymbSrfDistFindPoints(CagdSrfStruct *Srf,
CagdRType Epsilon,
CagdBType SelfInter)
Description:
Given a scalar surface representing the distance function square between
two curves, finds the zero set of the distance surface, if any, and
returns it.
The given surface is a non negative surface and zero set is its minima.
The returned points will contain the two parameter values of the two
curves that intersect in the detected zero set points.
Parameters:
Srf: | A bivariate function that represent the distance square
function between two curves.
|
---|
Epsilon: | Accuracy control.
|
---|
SelfInter: | Should we consider self intersection? That is, is Srf
computed from a curve to itself!?
|
---|
Returned Value:
CagdPtStruct *: A list of parameter values of both curves, at all
detected intersection locations.
|
---|
See Also:
SymbSrfDistCrvCrv
SymvCrvCrvInter
Keywords:
curve curve distance
curve curve intersection
(symb_lib/symbolic.c:910)
Prototype:
CagdSrfStruct *SymbSrfDotProd(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two surfaces - computes their dot product.
Returned surface is a scalar surface representing the dot product of the
two given surfaces.
Parameters:
Srf1, Srf2: | Two surface to multiply and compute a dot product for.
|
---|
Returned Value:
CagdSrfStruct *: A scalar surface representing the dot product of
Srf1 . Srf2.
|
---|
See Also:
SymbSrfMult
SymbSrfVecDotProd
SymbSrfScalarScale
SymbSrfMultScalar
SymbSrfInvert
SymbSrfCrossProd
Keywords:
product
dot product
symbolic computation
(symb_lib/curvatur.c:577)
Prototype:
void SymbSrfFff(CagdSrfStruct *Srf,
CagdSrfStruct **DuSrf,
CagdSrfStruct **DvSrf,
CagdSrfStruct **FffG11,
CagdSrfStruct **FffG12,
CagdSrfStruct **FffG22)
Description:
Computes coefficients of the first fundamental form of given surface Srf.
Parameters:
Srf: | Do compute the coefficients of the FFF for.
|
---|
DuSrf: | First derivative of Srf with respect to U goes to here.
|
---|
DvSrf: | First derivative of Srf with respect to V goes to here.
|
---|
FffG11: | FFF G11 scalar field.
|
---|
FffG12: | FFF G12 scalar field.
|
---|
FffG22: | FFF G22 scalar field.
|
---|
Returned Value:
See Also:
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
first fundamental form
(symb_lib/curvatur.c:616)
Prototype:
void SymbSrfSff(CagdSrfStruct *DuSrf,
CagdSrfStruct *DvSrf,
CagdSrfStruct **SffL11,
CagdSrfStruct **SffL12,
CagdSrfStruct **SffL22,
CagdSrfStruct **SNormal)
Description:
Computes coefficients of the first fundamental form of given surface Srf.
These coefficients are using non normalized normal that is also returned.
Parameters:
DuSrf: | First derivative of Srf with respect to U.
|
---|
DvSrf: | First derivative of Srf with respect to V.
|
---|
SffL11: | SFF L11 scalar field returned herein.
|
---|
SffL12: | SFF L12 scalar field returned herein.
|
---|
SffL22: | SFF L22 scalar field returned herein.
|
---|
SNormal: | Unnormalized normal vector field returned herein.
|
---|
Returned Value:
See Also:
SymbSrfFff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
second fundamental form
(symb_lib/curvatur.c:685)
Prototype:
CagdSrfStruct *SymbSrfGaussCurvature(CagdSrfStruct *Srf)
Description:
Computes the Gauss curvature of a given surface.
Parameters:
Srf: | Surface to compute Gaussian curvature for.
|
---|
Returned Value:
CagdSrfStruct *: A surface representing the Gaussian curvature field.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
curvature
(symb_lib/symbolic.c:819)
Prototype:
CagdSrfStruct *SymbSrfInvert(CagdSrfStruct *Srf)
Description:
Given a scalar surface, returns a scalar surface representing the
reciprocal values, by making it rational (if was not one) and flipping
the numerator and the denominator.
Parameters:
Srf: | A scalar surface to compute a reciprocal value for.
|
---|
Returned Value:
CagdSrfStruct *: A rational scalar surface that is equalto the
reciprocal value of Srf.
|
---|
See Also:
SymbSrfDotProd
SymbSrfVecDotProd
SymbSrfScalarScale
SymbSrfMultScalar
SymbSrfMult
SymbSrfCrossProd
Keywords:
division
symbolic computation
reciprocal value
(symb_lib/curvatur.c:1141)
Prototype:
CagdSrfStruct *SymbSrfIsoDirNormalCurvatureBound(CagdSrfStruct *Srf,
CagdSrfDirType Dir)
Description:
Computes normal curvature bound in given isoparametric direction.
This turns out to be (L11 . n) / G11 for u and (L22 . n) / G22 for v.
Herein the square of these equations is computed symbolically and
returned.
Parameters:
Srf: | To compute normal curvature in an isoparametric direction Dir.
|
---|
Dir: | Direction to compute normal curvature. Either U or V.
|
---|
Returned Value:
CagdSrfStruct *: A scalar field representing the normal curvature
square of Srf in dirction Dir.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
Keywords:
curvature
(symb_lib/curvatur.c:926)
Prototype:
CagdSrfStruct *SymbSrfIsoFocalSrf(CagdSrfStruct *Srf, CagdSrfDirType Dir)
Description:
Computes a focal surface for a principal curvature in an isoparametric
direction. For the u isoparametric direction,
1 G11
F(u, v) = n(u, v) --------- = n(u, v) ---
u
k (u, v) L11
n
Because Lii also has n(u,v) we can use the nonnormalized surface normal
to compute F(u, v), which is therefore computable and representable.
Parameters:
Srf: | Surface to compute iso focal surface.
|
---|
Dir: | Direction to compute iso focal surface. Either U or V.
|
---|
Returned Value:
CagdSrfStruct *: A surface representing the iso focal surface.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfMeanCurvatureSqr
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
curvature
focal surface
evolute
(symb_lib/curvatur.c:882)
Prototype:
CagdSrfStruct *SymbSrfMeanCurvatureSqr(CagdSrfStruct *Srf)
Description:
Computes the Mean curvature square of a given surface.
Parameters:
Srf: | Surface to compute Mean curvature square for.
|
---|
Returned Value:
CagdSrfStruct *: A surface representing the Mean curvature square field.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanEvolute
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
curvature
(symb_lib/curvatur.c:770)
Prototype:
CagdSrfStruct *SymbSrfMeanEvolute(CagdSrfStruct *Srf)
Description:
Computes an "evolute surface" to a given surface using twice the Mean
curvature as magnitude.
1 |G|
E(u, v) = n(u, v) --------- = n(u, v) ---------------------------------
2 H(u, v) ( G11 L22 + G22 L11 - 2 G12 L12 )
Becuase H(u,v) also has n(u,v) we can use the nonnormalized surface normal
to compute E(u, v), which is therefore computable and representable.
Parameters:
Srf: | Surface to compute mean evolute.
|
---|
Returned Value:
CagdSrfStruct *: A surface representing the mean evolute surface.
|
---|
See Also:
SymbSrfFff
SymbSrfSff
SymbSrf2DDeterminant
SymbSrfGaussCurvature
SymbSrfMeanCurvatureSqr
SymbSrfIsoFocalSrf
SymbSrfCurvatureUpperBound
SymbSrfIsoDirNormalCurvatureBound
Keywords:
curvature
evolute
(symb_lib/symbolic.c:1571)
Prototype:
CagdSrfStruct *SymbSrfMergeScalar(CagdSrfStruct *SrfW,
CagdSrfStruct *SrfX,
CagdSrfStruct *SrfY,
CagdSrfStruct *SrfZ)
Description:
Given a set of scalar surfaces, treat them as coordinates into a new
surface.
Assumes at least SrfX is not NULL in which a scalar surface is returned.
Assumes SrfX/Y/Z/W are either E1 or P1 in which the weights are assumed
to be identical and can be ignored if SrfW exists or copied otheriwse.
Parameters:
SrfW: | The weight component of new constructed surface, if have any.
|
---|
SrfX: | The X component of new constructed surface.
|
---|
SrfY: | The Y component of new constructed surface, if have any.
|
---|
SrfZ: | The Z component of new constructed surface, if have any.
|
---|
Returned Value:
CagdSrfStruct *: A new surface constructed from given scalar surfaces.
|
---|
See Also:
SymbSrfSplitScalar
SymbCrvMergeScalar
Keywords:
merge
symbolic computation
(symb_lib/symbolic.c:780)
Prototype:
CagdSrfStruct *SymbSrfMult(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two surfaces - multiply them coordinatewise.
The two surfaces are promoted to same point type before the
multiplication can take place.
Parameters:
Srf1, Srf2: | Two surface to multiply coordinatewise.
|
---|
Returned Value:
CagdSrfStruct *: The product of Srf1 * Srf2 coordinatewise.
|
---|
See Also:
SymbSrfDotProd
SymbSrfVecDotProd
SymbSrfScalarScale
SymbSrfMultScalar
SymbSrfInvert
Keywords:
product
symbolic computation
(symb_lib/symbolic.c:1173)
Prototype:
CagdSrfStruct *SymbSrfNormalSrf(CagdSrfStruct *Srf)
Description:
Given a surface - compute its unnormalized norrmal vectorfield surface, as
the cross product if this partial derivatives.
Parameters:
Srf: | To compute an unnormalized normal vector field for.
|
---|
Returned Value:
CagdSrfStruct *: A vector field representing the unnormalized normal
vector field of Srf.
|
---|
Keywords:
normal
symbolic computation
(symb_lib/offset.c:259)
Prototype:
CagdSrfStruct *SymbSrfOffset(CagdSrfStruct *Srf, CagdRType OffsetDist)
Description:
Given a surface and an offset amount OffsetDist, returns an approximation
to the offset surface by offseting the control mesh in the normal
direction.
Parameters:
Srf: | To approximate its offset surface with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
Returned Value:
CagdSrfStruct *: An approximation to the offset surface.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfSubdivOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/symbolic.c:1129)
Prototype:
CagdSrfStruct *SymbSrfRtnlMult(CagdSrfStruct *Srf1X,
CagdSrfStruct *Srf1W,
CagdSrfStruct *Srf2X,
CagdSrfStruct *Srf2W,
CagdBType OperationAdd)
Description:
Given two surfaces - multiply them using the quotient product rule:
X = X1 W2 +/- X2 W1
All provided surfaces are assumed to be non rational scalar surfaces.
Returned is a non rational scalar surface (CAGD_PT_E1_TYPE).
Parameters:
Srf1X: | Numerator of first surface.
|
---|
Srf1W: | Denominator of first surface.
|
---|
Srf2X: | Numerator of second surface.
|
---|
Srf2W: | Denominator of second surface.
|
---|
OperationAdd: | TRUE for addition, FALSE for subtraction.
|
---|
Returned Value:
CagdSrfStruct *: The result of Srf1X Srf2W +/- Srf2X Srf1W.
|
---|
See Also:
SymbSrfDotProd
SymbSrfVecDotProd
SymbSrfScalarScale
SymbSrfMultScalar
SymbSrfInvert
Keywords:
product
symbolic computation
(symb_lib/symbolic.c:867)
Prototype:
CagdSrfStruct *SymbSrfScalarScale(CagdSrfStruct *Srf, CagdRType Scale)
Description:
Given a surface, scale it by Scale.
Parameters:
Srf: | A surface to scale by magnitude Scale.
|
---|
Scale: | Scaling factor.
|
---|
Returned Value:
CagdSrfStruct *: A surfaces scaled by Scale compared to Srf.
|
---|
See Also:
SymbSrfDotProd
SymbSrfVecDotProd
SymbSrfMult
SymbSrfMultScalar
SymbSrfInvert
SymbSrfCrossProd
Keywords:
scaling
symbolic computation
(symb_lib/symbolic.c:1510)
Prototype:
void SymbSrfSplitScalar(CagdSrfStruct *Srf,
CagdSrfStruct **SrfW,
CagdSrfStruct **SrfX,
CagdSrfStruct **SrfY,
CagdSrfStruct **SrfZ)
Description:
Given a surface splits it to its scalar component surfaces. Ignores all
dimensions beyond the third, Z, dimension.
Parameters:
Srf: | Surface to split.
|
---|
SrfW: | The weight component of Srf, if have any.
|
---|
SrfX: | The X component of Srf.
|
---|
SrfY: | The Y component of Srf, if have any.
|
---|
SrfZ: | The Z component of Srf, if have any.
|
---|
Returned Value:
See Also:
SymbSrfMergeScalar
SymbCrvSplitScalar
Keywords:
split
symbolic computation
(symb_lib/symbolic.c:756)
Prototype:
CagdSrfStruct *SymbSrfSub(CagdSrfStruct *Srf1, CagdSrfStruct *Srf2)
Description:
Given two surfaces - subtract them coordinatewise.
The two surfaces are promoted to same point type before the
multiplication can take place. Furthermore, order and continuity are
matched as well.
Parameters:
Srf1, Srf2: | Two surface to subtract coordinatewise.
|
---|
Returned Value:
CagdSrfStruct *: The difference of Srf1 - Srf2 coordinatewise.
|
---|
See Also:
SymbSrfAdd
SymbMeshAddSub
SymbSrfMult
Keywords:
subtraction
symbolic computation
(symb_lib/offset.c:355)
Prototype:
CagdSrfStruct *SymbSrfSubdivOffset(CagdSrfStruct *Srf,
CagdRType OffsetDist,
CagdRType Tolerance)
Description:
Given a surface and an offset amount OffsetDist, returns an approximation
to the offset surface by offseting the control mesh in the normal
direction.
If resulting offset is not satisfying the required tolerance the surface
is subdivided and the algorithm recurses on both parts.
Parameters:
Srf: | To approximate its offset surface with distance OffsetDist.
|
---|
OffsetDist: | Amount of offset. Negative denotes other offset direction.
|
---|
Tolerance: | Accuracy control.
|
---|
Returned Value:
CagdSrfStruct *: An approximation to the offset surface, to within
Tolerance.
|
---|
See Also:
SymbCrvOffset
SymbCrvSubdivOffset
SymbSrfOffset
SymbCrvAdapOffset
SymbCrvAdapOffsetTrim
SymbCrvLeastSquarOffset
SymbCrvMatchingOffset
Keywords:
offset
(symb_lib/symbolic.c:960)
Prototype:
CagdSrfStruct *SymbSrfVecDotProd(CagdSrfStruct *Srf, CagdVType Vec)
Description:
Given a surface and a vector - computes their dot product.
Returned surface is a scalar surface representing the dot product.
Parameters:
Srf: | Curve to multiply and compute a dot product for.
|
---|
Vec: | Vector to project Srf onto.
|
---|
Returned Value:
CagdSrfStruct *: A scalar surface representing the dot product of
Srf . Vec.
|
---|
See Also:
SymbSrfDotProd
SymbSrfMult
SymbSrfScalarScale
SymbSrfMultScalar
SymbSrfInvert
SymbSrfCrossProd
Keywords:
product
dot product
symbolic computation
(symb_lib/morphing.c:53)
Prototype:
CagdCrvStruct *SymbTwoCrvsMorphing(CagdCrvStruct *Crv1,
CagdCrvStruct *Crv2,
CagdRType Blend)
Description:
Given two compatible curves (See function CagdmakeCrvsCompatible),
computes a convex blend between them according to Blend which must be
between zero and one.
Returned is the new blended curve.
Parameters:
Crv1, Crv2: | The two curves to blend.
|
---|
Blend: | A parameter between zero and one
|
---|
Returned Value:
CagdCrvStruct *: Crv2 * Blend + Crv1 * (1 - Blend).
|
---|
Keywords:
morphing
(symb_lib/morphing.c:117)
Prototype:
CagdCrvStruct *SymbTwoCrvsMorphingCornerCut(CagdCrvStruct *Crv1,
CagdCrvStruct *Crv2,
CagdRType MinDist,
CagdBType SameLength,
CagdBType FilterTangencies)
Description:
Given two compatible curves (See function CagdMakeCrvsCompatible),
computes a morph between them using corner cutting approach.
Returned is the new blended curve.
Parameters:
Crv1, Crv2: | The two curves to blend.
|
---|
MinDist: | Minimal maximum distance between adjacent curves to make
sure motion is visible. The curves will move at most twice
that much in their maximal distance (roughly).
|
---|
SameLength: | If TRUE, length of curves is preserved, otherwise BBOX is.
|
---|
FilterTangenices: | f TRUE, attempt is made to eliminate the intermediate
line representation.
|
---|
Returned Value:
CagdCrvStruct *: The blended curve.
|
---|
Keywords:
morphing
(symb_lib/morphing.c:295)
Prototype:
CagdCrvStruct *SymbTwoCrvsMorphingMultiRes(CagdCrvStruct *Crv1,
CagdCrvStruct *Crv2,
CagdRType BlendStep)
Description:
Given two compatible curves (See function CagdMakeCrvsCompatible),
computes a morph between them using multiresolution decomposition.
Returned is a list of new blended curves.
Parameters:
Crv1, Crv2: | The two curves to blend.
|
---|
BlendStep: | A step size of the blending.
|
---|
Returned Value:
CagdCrvStruct *: A list of blended curves.
|
---|
Keywords:
morphing
(symb_lib/morphing.c:727)
Prototype:
CagdSrfStruct *SymbTwoSrfsMorphing(CagdSrfStruct *Srf1,
CagdSrfStruct *Srf2,
CagdRType Blend)
Description:
Given two compatible surfaces (See function CagdmakeSrfsCompatible),
computes a convex blend between them according to Blend which must be
between zero and one.
Returned is the new blended surface.
Parameters:
Srf1, Srf2: | The two surfaces to blend.
|
---|
Blend: | A parameter between zero and one
|
---|
Returned Value:
CagdSrfStruct *: Srf2 * Blend + Srf1 * (1 - Blend).
|
---|
Keywords:
morphing
(symb_lib/distance.c:425)
Prototype:
CagdPtStruct *SymbCrvCrvInter(CagdCrvStruct *Crv1,
CagdCrvStruct *Crv2,
CagdRType CCIEpsilon,
CagdBType SelfInter)
Description:
Computes the intersection points of two planar curves, in the XY plane
Parameters:
Crv1, Crv2: | The two curves to intersect.
|
---|
CCIEpsilon: | Tolerance of computation.
|
---|
SelfInter: | If TRUE, needs to handle a curve against itself detecting
self intersections in Crv1 (== Crv2).
|
---|
Returned Value:
CagdPtStruct *: List of intersection points. Each point holds the
intersection location in Crv1 as first coefficient and intersection
location in Crv2 as first coefficient.
|
---|
See Also:
SymbSrfDistCrvCrv
SymbSrfDistFindPoints
Keywords: